// api/modules/chat.js - 聊天模块API
import request from '../index'

export default {
  // 发送消息
  sendMessage(data) {
    return request.post('/chat/message', data)
  },

  // 发送流式消息
  sendMessageStream(data) {
    return request.post('/chat/message/stream', {
      ...data,
      responseType: 'text',
      timeout: 60000 // 设置较长的超时时间，确保流式响应不会过早超时
    })
  },
  
  // 正确实现的getHistory方法
  getHistory(deviceId, params = {}) {
    // 确保deviceId存在并且有效
    if (!deviceId) {
      console.error('deviceId不能为空');
      return Promise.reject(new Error('deviceId不能为空'));
    }
    
    console.log('发送getHistory请求，参数:', { deviceId, ...params });
    
    // 注意：这里不要传递params对象，而是直接将参数展开
    return request.get('/chat/messages', {
      params: {
        deviceId: deviceId, 
        page: params.page || 1,
        size: params.size || 20
      }
    });
  },
  
  // 获取指定设备的会话消息
  getDeviceMessages(userId, deviceId, page = 1, size = 20) {
    return request.get('/chat/device/messages', {
      params: {
        userId,
        deviceId,
        page,
        size
      }
    });
  },
  
  // 获取会话列表
  getSessionList(params) {
    return request.get('/chat/sessions', {
      params
    })
  },
  
  // 获取会话详情
  getSessionDetail(sessionId) {
    return request.get(`/chat/session/${sessionId}`)
  },
  
  // 获取会话上下文
  getSessionContext(sessionId) {
    return request.get(`/chat/context/${sessionId}`)
  },
  
  // 创建会话
  createSession(data) {
    return request.post('/chat/session', data)
  },
  
  // 更新会话信息
  updateSession(data) {
    return request.put('/chat/session', data)
  },
  
  // 删除会话
  deleteSession(sessionId) {
    return request.delete(`/chat/session/${sessionId}`)
  },
  
  // 批量删除会话
  batchDeleteSessions(sessionIds) {
    return request.delete('/chat/sessions', {
      data: { sessionIds }
    })
  },
  
  // 清空会话消息
  clearHistory(data) {
    return request.post('/chat/session/clear', data)
  },
  
  // 删除消息
  deleteMessage(messageId) {
    return request.delete(`/chat/message/${messageId}`)
  },
  
  // 重新生成回复
  regenerateMessage(sessionId, messageId) {
    return request.post(`/chat/message/regenerate/${sessionId}/${messageId}`)
  },
  
  // 文本转语音
  textToSpeech(data) {
    return request.post('/chat/tts', data)
  }
}